/*
 * 
 *  Este arquivo é parte do software TODO Calculadora. TODO Calculadora é um software livre;
 *  você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU
 *  como publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença,
 *  ou (na sua opnião) qualquer versão.
 *  
 *	Este programa é distribuido na esperança que possa ser útil, mas SEM NENHUMA GARANTIA;
 *  sem uma garantia implícita de ADEQUAÇÂO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
 *  Veja a Licença Pública Geral GNU para maiores detalhes. Você deve ter recebido uma cópia
 *  da Licença Pública Geral GNU junto com este programa, se não, escreva para a Fundação do
 *	Software Livre(FSF)
 *
 *	Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

package conversores.temperatura;

import util.Constantes;
import conversores.abstrata.AbstractConversorMedidaTemperatura;
import enums.TipoConversaoTemperatura;

/**
 * <p>
 * Classe que converte as temperaturas
 * </p>
 * 
 * @author Marcos Oliveira Soares
 * @author Thaís Pereira Medrado
 */
public class ConversorMedidaTemperatura extends
		AbstractConversorMedidaTemperatura {

	public ConversorMedidaTemperatura() {
		super();
	}

	@Override
	public void realizaConversaoMedidaTemperatura(
			TipoConversaoTemperatura conversao, Double valor) {
		switch (conversao) {

		case CELSIUS_KELVIN: {
			setResultado(valor + Constantes.VALOR_MINIMO_KELVIN);
		}
			break;

		case CELCIUS_FAHRENHEIT: {
			setResultado(((valor / Constantes.CONSTANTE_DE_CELCIUS) * Constantes.CONSTANTE_DE_KELVIN)
					+ Constantes.VALOR_MINIMO_FAHRENHEIT);
		}
			break;

		case KELVIN_CELCIUS: {
			setResultado(valor - Constantes.VALOR_MINIMO_KELVIN);
		}
			break;

		case KELVIN_FAHRENHEIT: {
			setResultado((valor * Constantes.CONSTANTE_DE_KELVIN_FAHRENHEIT_1)
					- Constantes.CONSTANTE_DE_KELVIN_FAHRENHEIT_2);
		}

			break;

		case FAHRENHEIT_CELSIUS: {
			setResultado((valor - Constantes.VALOR_MINIMO_FAHRENHEIT)
					/ Constantes.CONSTANTE_DE_KELVIN_FAHRENHEIT_1);
		}

			break;

		case FAHRENHEIT_KELVIN: {
			setResultado(((valor - Constantes.VALOR_MINIMO_FAHRENHEIT) / Constantes.CONSTANTE_DE_KELVIN_FAHRENHEIT_1)
					+ Constantes.VALOR_MINIMO_KELVIN);
		}

			break;

		default:

		}

	}

}
